A storage array finds usefulness in any number of modern data-processing applications. One example where a storage array is often applied is in the context of a file server, which is a data-processing system that provides file service relating to the organization of information on writeable persistent storage devices, such as memories, tapes or disks of an array. The file server or filer may be embodied as a storage system including an operating system that implements a file system to logically organize the information as a hierarchical structure of directories and files on, e.g., the disks. Each “on-disk” file may be implemented as set of data structures, e.g., disk blocks, configured to store information, such as the actual data for the file. A directory associated with the storage array, on the other hand, may be implemented as a specially formatted file in which information about other files and directories are stored.
A storage system for a storage array may be further configured to operate according to a client/server model of information delivery to thereby allow many clients to access files stored on a server, e.g., the storage system. In this model, the client may comprise an application executing on a computer that “connects” to the storage system over a computer network, such as a point-to-point link, shared local area network, wide area network or virtual private network implemented over a public network, such as the Internet. Each client may request the services of the file system on the storage system by issuing file system protocol messages (in the form of packets) to the system over the network. It should be noted, however, that the storage system may alternatively be configured to operate as an assembly of storage devices that is directly attached to a (e.g., client or “host”) computer. Here, a user may request the services of the file system to access (i.e., read and/or write) data from/to the storage devices.
A common type of file system is a “write in-place” file system in which the locations of the data structures, such as data blocks, on disk are typically fixed. Changes to the data blocks are made “in-place” in accordance with the write in-place file system. If an update to a file extends the quantity of data for the file, an additional data block is allocated.
Another type of file system is a write-anywhere file system that does not overwrite data on disks. If a data block on disk is retrieved (read) from disk into memory and “dirtied” with new data, the data block is stored (written) to a new location on disk to thereby optimize write performance. A write-anywhere file system may initially assume an optimal layout such that the data is substantially contiguously arranged on disks. The optimal disk layout results in efficient access operations, particularly for sequential read operations, directed to the disks.
The disk storage is typically implemented as one or more storage “volumes” that comprise a cluster of physical storage devices (disks), defining an overall logical arrangement of disk space. Each volume is generally associated with its own file system. The disks within a volume/file system are typically organized as one or more groups of Redundant Array of Independent (or Inexpensive) Disks (RAID). RAID implementations enhance the reliability/integrity of data storage through the redundant writing of data “stripes” across a given number of physical disks in the RAID group, and the appropriate storing of redundant information with respect to the striped data. The redundant information enables recovery of data lost when a storage device fails.
In modern cooperation data centers, storage array systems are widely used to provide data storage for mission critical data. Enterprise servers usually access data storage provided by storage array subsystems through a Storage Area Network (SAN). An example of an SAN is depicted in FIG. 1, which illustrates a block diagram indicative of a storage area network system 100. In the configuration depicted in FIG. 1, system 100 includes a group of servers 102, 104, and 106, which communicate with and are connected to an SAN 104. Additionally, a group of disk arrays 108, 110 are also connected to and communicate with SAN 104.
In general, modern intelligent storage array controllers provide more advanced features beyond RAID data availability protection and IO performance improvement. Some of these advanced features include the ability to dynamically create a logical volume and make the volume available to enterprise servers on the SAN. When a storage administrator decides that more storage are needed for his/her server applications, the storage array can provide additional logical volume and make it available to server applications without interrupting server's normal services. Other advanced features include creating a snapshot image volume of an existing volume and make it available to enterprise servers on the SAN. A snapshot volume is a “single point-in-time image” of a volume. Data center uses snapshot volumes for short-term backup or “working copy” of regular data.
Further advanced features include the ability to delete a snapshot image volume and create a new snapshot volume and make it available to enterprise servers on the SAN. Data center creates a new snapshot of an existing volume and discards the old snapshot. Another advanced feature involves creating a copy volume of an existing volume and making it available to enterprise servers on the SAN. Data center clones a set of data as a backup or splitting the current data to two different branches.
Organization and companies that utilize computer systems often out source the bulk storage of data from such systems to a storage service provider. These organizations obtain the benefit that they do not need to invest capital in large arrays of hard discs or to employ highly paid specialists to manage such storage arrays.
The storage service providers often utilize large arrays of hard discs. The providers partition the total storage capacity of the hard disc arrays into a number of areas, known as Logical Units (LUNs), with a LUN being a particular disc, plurality of discs or part of a particular disc. Thus each LUN has a defined physical location within the disc array, and is in general a contiguous area of the array.
When a host rents a certain volume of storage capacity the relevant number of LUNs is assigned to that host, and the host may aggregate them into volumes. It is rare for a LUN to be used to its full capacity to store host information. However, once the size of a LUN is defined at the outset it is difficult to redefine it to a larger capacity without removal and reinsertion of all the data, so increasing the size of a LUN is generally avoided by allocating enough storage capacity at the outset to exceed predicted maximum usage requirements. Also, information technology (IT) managers tend to avoid full volumes because this can cause additional problems. The net result may be a significant amount of disc space, which is allocated to particular hosts, on one or more of the discs in the service provider's disc array remaining unused by the respective hosts and inaccessible to other hosts.
In general, all the above advanced storage array features rely on a server operating system to discover LUN creation on a storage array system and make the LUN available to server applications. In the case of a snapshot volume deletion/re-creation, if the old snapshot volume and the new snapshot volume are mapped to the same addressable address, the host operating must understand the volumes on the same addressable address are two different volumes.
Some operating systems such as Microsoft windows support hardware “Plug and Play” or PnP. The hardware PnP feature is limited to the case where a new hardware is plugged into or removed from the system. In the case of SAN environment, however, when a fibre channel (FC) cable, which is connected to a FC switch, is plugged to a FC HBA port that is installed on a computer system, the HBA will discover all storage arrays that are connected on the switch and then notify the operating system that new devices are plugged in. All available Logical Units behind a storage system are further discovered and become available to the operation system.
When a FC port of a storage array is plugged into a FC switch, the switch detects a new FC port joins the fabric. It will send a notification event to all parties in the fabric. A host HBA will receive the event and detect the newly joined member. The HBA driver will notify the operation system that a new-storage array and devices are available.
When a new Logical Unit is created in an existing storage array, the operating system and the host HBA doesn't realize the logical unit inventory changes in the storage array system. The new Logical Unit is not reported to the operating system and further it is not available to server applications. One of the problems with conventional methodologies with respect to LUNs and storage array systems is that after a new logical unit is created, data center administrator has to manually start a “device rescan” procedure to force the operating system re-scan its bus device. Such procedures are time consuming and generally ineffective.
Based on the foregoing, it is believed that a solution to such problems is to implement a method and/or system that automatically discovers Logical Unit creation and deletion from a storage array system and makes the new Logical Unit available for server applications. Such methods and systems are disclosed in greater detail herein.